﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Bussines;
using System.Data.SqlClient;
using Bussiness.LeasingLogic;
using System.IO;
using Bussiness.Printing;



namespace ownx
{
    public partial class wfKonstrukcio : System.Web.UI.Page
    {
        clTermekekLista _clTermekekLista;
        clKonstrukcioLista _clKonstrukcioLista;
        
        TBLObj blObj = null;
        int TRM_KNS_ID = -1;

        protected void Page_Load(object sender, EventArgs e)
        {
            
            if (Session["BL"] != null)
            {
                blObj = (TBLObj)Session["BL"];
            }



            if (!(Page.IsPostBack))
            {
                _clTermekekLista = new clTermekekLista(blObj);

                ddlTermek.Items.Clear();

                foreach (clTermekek aktk in _clTermekekLista)
                {
                    ListItem li = new ListItem(aktk.fTRM_NEV, aktk.fTRM_ID.ToString());
                    ddlTermek.Items.Add(li);
                }
                if (ddlTermek.SelectedValue != "")
                {
                    TRM_KNS_ID = Convert.ToInt32(ddlTermek.SelectedValue);
                    _clKonstrukcioLista = new clKonstrukcioLista (blObj, TRM_KNS_ID);
                    ddlTermek_SelectedIndexChanged(ddlTermek, null);
                }
                TesztadatokFeltoltese();
            }
            else
            {
                bOk_Click(bOk, e);
                
                if (ddlTermek.SelectedValue != "")
                {
                    TRM_KNS_ID = Convert.ToInt32(ddlTermek.SelectedValue);
                    _clKonstrukcioLista = new clKonstrukcioLista(blObj, TRM_KNS_ID);
                }
            }
        }

        private void TesztadatokFeltoltese()
        {
            txtHitelOsszeg.Text = "50000000";
            txtFutamIdo.Text = "36";
            txtKamat.Text = "6,72";
            txtKezKtg.Text = "1";
            txtKezKtgMin.Text = "1";
            txtKezKtgMax.Text = "60000";
            txtFolyJut.Text = "1";
            txtFolyJutMin.Text = "1";
            txtFolyJutMax.Text = "60000";
            txtHitelbDijSz.Text = "1";
            txtHitelbDijE.Text = "1"; ;
            txtHelyszinE.Text = "1";
            txtHelyszinSz.Text = "1";
            txtErtekbDijE.Text = "1";
            txtErtekbDijSz.Text = "1";
            txtTurelmiIdo.Text = "0";
            txtKamatTurIdo.Text = "0";
            txtArfolyam.Text = "1";
        }
        protected void bOk_Click(object sender, EventArgs e)
        {
            string Tipus = "";
            bool KellMent = true; 
            StringEnum es = new StringEnum(typeof(OszlopFejlec));

            Tipus = ddlKonstrukcio.SelectedValue;

            KalkTipus KT;
            KT = (KalkTipus)Enum.Parse(typeof(KalkTipus), Tipus ); //"egyenletesToketorlesztes");


            


            //kalkulacio input parametereinek begyujtese
            CalcInputData ci;
            ci = new CalcInputData();
            try
            {
                ci.FinanszirozottOsszeg = Convert.ToDouble(txtHitelOsszeg.Text);
            }
            catch
            {
                lMessage.Text = "Hitelösszeg nem megfelő formátumú!";
                txtHitelOsszeg.Focus();
                KellMent = false;
            }
            try
            {
                ci.Futamido = Convert.ToInt16(txtFutamIdo.Text);
            }
            catch
            {
                lMessage.Text = "Futamidő nem megfelő formátumú!";
                txtFutamIdo.Focus();
                KellMent = false;
            }
            try
            {
                ci.Kamat = Convert.ToDouble(txtKamat.Text);
            }
            catch
            {
                lMessage.Text = "Kamat nem megfelő formátumú!";
                txtKamat.Focus();
                KellMent = false;
            }
            try
            {
                ci.KezKtg = Convert.ToDouble(txtKezKtg.Text);
            }
            catch
            {
                lMessage.Text = "Kezelés ktg nem megfelő formátumú!";
                txtKezKtg.Focus();
                KellMent = false;
            }
            try
            {               
                ci.KezelKtgMin = Convert.ToDouble(txtKezKtgMin.Text);
            }
            catch
            {
                lMessage.Text = "Kezelés ktg min. nem megfelő formátumú!";
                txtKezKtgMin.Focus();
                KellMent = false;
            }
            try
            {
                ci.KezelKtgMin = Convert.ToDouble(txtKezKtgMax.Text);
            }
            catch
            {
                lMessage.Text = "Kezelés ktg max. nem megfelő formátumú!";
                txtKezKtgMax.Focus();
                KellMent = false;
            }
            try
            {
                ci.Arfolyam = Convert.ToDouble(txtArfolyam.Text);
            }
            catch
            {
                lMessage.Text = "Árfolyam nem megfelő formátumú!";
                txtArfolyam.Focus();
                KellMent = false;
            }
            ci.Deviza = cmbDeviza.SelectedValue;
            try
            {
                ci.TurIdo = Convert.ToInt32(txtTurelmiIdo.Text);
            }
            catch
            {
                lMessage.Text = "Türelmi idő nem megfelő formátumú!";
                txtTurelmiIdo.Focus();
                KellMent = false;
            }
            try
            {
                ci.TurIdoKam = Convert.ToDouble(txtKamatTurIdo.Text);
            }
            catch
            {
                lMessage.Text = "Türelmi idő alatti kamat nem megfelő formátumú!";
                txtKamatTurIdo.Focus();
                KellMent = false;
            }
            try
            {
                ci.FolyKtgSZ = Convert.ToDouble(txtFolyJut.Text);
            }
            catch
            {
                lMessage.Text = "Foly. jut nem megfelő formátumú!";
                txtFolyJut.Focus();
                KellMent = false;
            }
            try
            {
                ci.FolyKtgMin = Convert.ToDouble(txtFolyJutMin.Text);
            }
            catch
            {
                lMessage.Text = "Foly. jut min nem megfelő formátumú!";
                txtFolyJutMin.Focus();
                KellMent = false;
            }
            try
            {
                ci.FolyKtgMax = Convert.ToDouble(txtFolyJutMax.Text);
            }
            catch
            {
                lMessage.Text = "Foly. jut max nem megfelő formátumú!";
                txtFolyJutMax.Focus();
                KellMent = false;
            }
            try
            {
                ci.HitelBirSZ = Convert.ToDouble(txtHitelbDijSz.Text);
            }
            catch
            {
                lMessage.Text = "Hitelbírálati díj nem megfelő formátumú!";
                txtHitelbDijSz.Focus();
                KellMent = false;
            }
            try
            {
                ci.HitelBirERT = Convert.ToDouble(txtHitelbDijE.Text);
            }
            catch
            {
                lMessage.Text = "Hitelbírálati díj nem megfelő formátumú!";
                txtHitelbDijE.Focus();
                KellMent = false;
            }

            try
            {
                ci.ErtekBecslSZ = Convert.ToDouble(txtErtekbDijSz.Text);
            }
            catch
            {
                lMessage.Text = "Értékbecslés díja nem megfelő formátumú!";
                txtErtekbDijSz.Focus();
                KellMent = false;
            }
            try
            {
                ci.ErtekBecslERT = Convert.ToDouble(txtErtekbDijE.Text);
            }
            catch
            {
                lMessage.Text = "Értékbecslés díja nem megfelő formátumú!";
                txtErtekbDijE.Focus();
                KellMent = false;
            }

            try
            {
                ci.HelySzemleSZ = Convert.ToDouble(txtHelyszinSz.Text);
            }
            catch
            {
                lMessage.Text = "Helyszíni szemle díja nem megfelő formátumú!";
                txtHelyszinSz.Focus();
                KellMent = false;
            }
            try
            {
                ci.HelySzemleERT = Convert.ToDouble(txtHelyszinE.Text);
            }
            catch
            {
                lMessage.Text = "Helyszíni szemle díja nem megfelő formátumú!";
                txtHelyszinE.Focus();
                KellMent = false;
            }

            try
            {
                ci.ErtBecsBe = chkErtekBDijBeepul.Checked;
            }
            catch
            {
                lMessage.Text = "Valami van a chkErtekBDijBeepul-val!";
                chkErtekBDijBeepul.Focus();
                KellMent = false;
            }

            try
            {
                ci.FolyJutBe = chkFolyJutBeepul.Checked;
            }
            catch
            {
                lMessage.Text = "Valami van a chkFolyJutBeepul-val!";
                chkFolyJutBeepul.Focus();
                KellMent = false;
            }

            try
            {
                ci.HelySzemBe = chkHelysziniSzBeepul.Checked;
            }
            catch
            {
                lMessage.Text = "Valami van a chkHelysziniSzBeepul-val!";
                chkHelysziniSzBeepul.Focus();
                KellMent = false;
            }

            try
            {
                ci.HitBirBe = chkHitelbDijBeepul.Checked;
            }
            catch
            {
                lMessage.Text = "Valami van a chkHitelbDijBeepul-val!";
                chkHitelbDijBeepul.Focus();
                KellMent = false;
            }

            
            ci.TokeFizGyak = (new HelperClasses()).getGyakEnumByName(cmbTokeFiz.Text);
            ci.KamatFizGyak = (new HelperClasses()).getGyakEnumByName(cmbKamatFiz.Text);
            ci.KezKtgFizGyak = (new HelperClasses()).getGyakEnumByName(cmbKezKtg.Text);
            tKonstrukcio.Rows.Clear();
            
            //kalkulacio
            if (KellMent)
            {
                tKonstrukcio.Style["width"] = "100%";
                tKonstrukcio.Style["border-color"] = "#dac6a6";

                //fejlecek beallitasa
                TableRow trFejlec = new TableRow();
                for (int cy = 0; cy <= Enum.GetValues(typeof(OszlopFejlec)).Length - 1; cy++)
                {
                    TableCell tc = new TableCell();
                    tc.Style["background-color"] = "black";
                    tc.Style["color"] = "#E8CF8F";
                    tc.Text = es.GetStringValue(Enum.GetName(typeof(OszlopFejlec), cy + 1));
                    trFejlec.Cells.Add(tc);
                }
                tKonstrukcio.Rows.Add(trFejlec);


                lMessage.Text = "";
                Calculation c;
                c = new Calculation((int)KT, ci);

                if (!c.KalkEredmeny())
                {
                    lMessage.Text = "Hibás kalkuláció típus";
                }
                
                for (int r = 1; r <= c.COD.Eredmeny.Count; r++)
                {
                    TableRow tr = new TableRow();
                    for (int cy = 0; cy <= Enum.GetValues(typeof(OszlopFejlec)).Length - 1; cy++)
                    {
                        TableCell tc = new TableCell();
                        tc.Style["background-color"] = "#e3cdab";
                        tc.Style["font-weight"] = "normal";
                        tc.Style["color"] = "black";
                        tc.Text = c.GetEredmeny(r - 1).getStrOszlopAdat(Enum.GetName(typeof(OszlopFejlec), cy + 1));
                        tr.Cells.Add(tc);
                    }
                    tKonstrukcio.Rows.Add(tr);
                }
            }
        }

        protected void bExport_Click(object sender, EventArgs e)
        {
            string Err = "";
            if (ExcelExport(ref Err))
            {
                lMessage.Text = "";
            }
            else
            {
                lMessage.Text = Err;
            }



        }

        protected void bExportWord_Click(object sender, EventArgs e)
        {
          
            doPrintToRTF rt = new doPrintToRTF();
            rt.doRTF(tKonstrukcio);

        }

        protected void bVissza_Click(object sender, EventArgs e)
        {
            Response.Redirect("wfDefault.aspx");
        }

        protected void ddlTermek_SelectedIndexChanged(object sender, EventArgs e)
        {
             
            ddlKonstrukcio.Items.Clear();

            foreach (clKonstrukcio aktk in _clKonstrukcioLista)
            {
                ListItem li = new ListItem(aktk.fKNS_NEV, aktk.fKNS_TIPUS);
                ddlKonstrukcio.Items.Add(li);
            }
            ddlKonstrukcio_SelectedIndexChanged(ddlKonstrukcio, null);
        }
        public bool ExcelExport(ref string oErr)
        {
            string se = "";
            try
            {
                DataSet DS = new DataSet();

                StringWriter sw = new StringWriter();
                HtmlTextWriter wr = new HtmlTextWriter(sw);

                wr.RenderBeginTag(HtmlTextWriterTag.H1);
                wr.Write("Partnerek");
                wr.RenderEndTag();


                if (tKonstrukcio.Rows.Count > 0)
                {
                    DS.Tables.Add("EXPORT");

                    for (int i = 0; i < tKonstrukcio.Rows[0].Cells.Count; ++i)
                    {
                        se = tKonstrukcio.Rows[0].Cells[i].Text;
                        DS.Tables["EXPORT"].Columns.Add(se);
                    }
                    DataRow dr;
                    for (int i = 1; i < tKonstrukcio.Rows.Count; ++i)
                    {
                        dr = DS.Tables["EXPORT"].NewRow();
                        for (int j = 0; j < tKonstrukcio.Rows[0].Cells.Count; ++j)
                        {
                            dr[tKonstrukcio.Rows[0].Cells[j].Text] = tKonstrukcio.Rows[i].Cells[j].Text;
                        }
                        DS.Tables["EXPORT"].Rows.Add(dr);
                    }

                    GridView grid = new GridView();
                    grid.DataSource = DS;
                    grid.DataBind();
                    grid.HeaderStyle.Font.Bold = true;
                    grid.RenderControl(wr);

                    this.Response.Clear();
                    this.Response.ContentType = "application/vnd.ms-excel";
                    this.Response.Write(sw.ToString());
                    this.Response.End();

                }
                return true;

            }
            catch (Exception e)
            {
                string s = "Hiba a excel export közben!";
                Utilities.LogError(blObj, e, "wfKonstrukcio", s);
                oErr = s;
                return false;
            }
        }
        protected void ddlKonstrukcio_SelectedIndexChanged(object sender, EventArgs e)
        {
            //mezok lathatosagan allitasa - nincs ra szukseg
            /*
            if (ddlKonstrukcio.SelectedIndex != -1)
            {
                int l = _clAlgoritmusLista[ddlKonstrukcio.SelectedIndex].Edits.Length;

                _clAlgoritmusLista[ddlKonstrukcio.SelectedIndex].Edits.Length.ToString();
                
            } 
             */
        }
    }
}
